package com.ideaaedi.commonds.rank;


/**
 * 排名策略
 *
 * @author <font size = "20" color = "#3CAA3C"><a href="https://gitee.com/JustryDeng">JustryDeng</a></font> <img src="https://gitee.com/JustryDeng/shared-files/raw/master/JustryDeng/avatar.jpg" />
 * @since 1.0.0
 */
public enum RankStrategy {
    /**
     * 自然排名
     * <br />
     * P.S. 假设分数是100、90、80、80、70，降序排序，那么NATURAL排名后排名是1、2、3、4、5
     */
    NATURAL,
    
    /**
     * 相同值则排名相同， 后面那个不同的则排名一下跳至对应的位置
     * <br />
     * P.S. 假设分数是100、90、80、80、70，降序排序，那么SAME_RAKE_INDEX_POSTPONED排名后排名是1、2、3、3、5"
     */
    INDEX_POSTPONED_IF_SAME,
    
    /**
     * 相同值则排名相同， 后面那个不同的则排名+1
     * <br />
     * P.S. 假设分数是100、90、80、80、70，降序排序，那么SAME_RAKE_RANK_POSTPONED排名后排名是1、2、3、3、4
     */
    RANK_POSTPONED_IF_SAME,
    
    /**
     * 自定义排名
     * <br />
     * P.S. 若使用此枚举项，那么需要实现RankSupporter#customized, 并在使用Ranker时，传入自定义的RankSupporter具体实现
     */
    CUSTOMIZED
}
